# -*- coding: utf-8 -*-
"""
Created on Thu Apr  1 09:08:30 2021

@author: zihang
"""

import pandas as pd
import numpy as np
from WindPy import w
import datetime
import random
import requests
import os
import json
import fire
try:
    from daily_update import daily_update
except:
    from MYSQL.daily_update import daily_update


windid = {"M0024063": "公共财政收入_当月同比",
               
               "M0024064": "公共财政支出_当月同比",
               "M0046167": "公共财政支出_累计同比",
               "M0000612": "CPI",
               "M0327903": "CPI_食品烟酒_当月同比",
               "M0085932": "CPI_不包括食品和能源(核心CPI)_当月同比",
               "M0000650": "CPI_居住_当月同比",
               "M0001229": "PPI_生产资料_采掘工业_当月同比",
               "M0001230": "PPI_生产资料_原材料工业_当月同比",
               "M0001231": "PPI_生产资料_加工工业_当月同比",
               "M0000557": "工业企业_利润总额_累计同比",
               "M0289288": "工业企业_存货_累计同比",
               "M0001227": "PPI",
               "M6096116": "城镇新增就业人数_累计同比",
               "S0029657": "房地产开发投资完成额_累计值_同比",
              'M5567903': 'VAS',
               "M0000273": "固定资产投资完成额_累计值_同比",
               "M0000605": "进出口金额_当月同比",
               "M0000609": "进口金额_当月同比", 
               "M0000607": "出口金额_当月同比",
               "M0001428": "社会消费品零售总额_当月同比",
               "M5440435": "固定资产投资完成额_基础设施建设投资_累计同比",
               "M5531328": "固定资产投资完成额_基础设施建设投资(不含电力)_累计同比",
               "M0000357": "固定资产投资完成额_制造业_累计同比",
               "M5767203": "服务业生产指数_当月同比",
               "M5540106": "社会消费品零售总额_实物商品网上零售额_累计同比",
               "M0220163": "存款类机构质押式回购加权利率_7天",
               'M0000545':'工业增加值_当月同比',
               'M0001385': 'M2',
            'M5525763':'社会融资规模存量_同比',
            'M0325686':'1年期国债收益率',
            'M0325687':'10年期国债收益率',
            'M0058002':'金融机构人民币贷款加权平均利率',
            'M0000185':'中间价:美元兑人民币',
            'M0017138':'SHIBOR',
            'M0149844':'巨潮人民币实际有效汇率指数',
    }

tjd = {#{'y集合名称'：('XMind简称', '高频模拟', '对比数据')}
       'VAS': ('国内生产总值：生产法：不变价：当月同比增速：腾景高频模拟', 
               '国内生产总值：生产法：不变价：当月同比增速：腾景高频模拟',
               '国内生产总值：生产法：不变价：当月同比增速：腾景全口径',
               ),
       'M2': ('M2_同比',
              'M2：当月同比增速：腾景高频模拟',
              'M2：同比：官方',
              ),
       'CPI': ('CPI：总项：当月同比增速：腾景高频模拟',
               'CPI：总项：当月同比增速：腾景高频模拟',
               'CPI：当月同比：官方',
               ),
       'PPI': ('PPI：当月同比增速：腾景高频模拟',
               'PPI：当月同比增速：腾景高频模拟',
               'PPI：当月同比：官方',
               ),
       '进口金额_当月同比': ('进口金额当月同比', 
                     '进口金额当月同比',
                     '进口：进口金额：当月同比：官方',
                     ),
       '出口金额_当月同比': ('出口金额当月同比',
                     '出口金额当月同比',
                     '出口：出口金额：当月同比：官方',
                     ),
       '工业增加值_当月同比': ('规上工业增加值当月同比',
                      '规上工业增加值当月同比',
                      '工业增加值：规上工业增加值：当月同比：官方',
                      ),
       '固定资产投资完成额_累计值_同比': ('固定资本投资完成额累计同比',
                            '固定资本投资完成额累计同比',
                            '固定资本投资：固定资本投资完成额：累计同比：官方',
                            ),
       '固定资产投资完成额_基础设施建设投资_累计同比': ('基建投资累计同比',
                                   '基建投资累计同比',
                                   '固定资本投资：基建投资累计同比：官方',
           ),
       '房地产开发投资完成额_累计值_同比': ('房地产投资累计同比',
                             '房地产投资累计同比',
                             '固定资本投资：房地产投资累计同比：官方',
                             ),
       '固定资产投资完成额_制造业_累计同比': ('制造业投资累计同比', 
                              '制造业投资累计同比',
                              '固定资本投资：制造业投资累计同比：官方',
                              ),
       '社会消费品零售总额_当月同比': ('社会消费品零售总额当月同比',
                          '消费：现价：当月同比增速：官方',
                          '消费：现价：当月同比增速：官方',             
           ),
       '社会融资规模存量_同比': ('AFREs',
                       '金融：社会融资：存量同比增速：官方',
                       '金融：社会融资：存量同比增速：官方',
                       ),
       '公共财政收入_当月同比': ('公共财政收入：当月同比增速',
                       '公共财政收入：当月同比增速',
                       '公共财政收入：当月同比增速',
                       ),
       '公共财政支出_当月同比': ('公共财政支出：当月同比增速',
                       '公共财政支出：当月同比增速',
                       '公共财政支出：当月同比增速',
                       ),
       'CPI_食品烟酒_当月同比': ('CPI：食品烟酒：当月同比增速：腾景高频模拟',
                         'CPI：食品烟酒：当月同比增速：腾景高频模拟',
                         'CPI：食品烟酒：当月同比增速：腾景高频模拟',
           ),
       'CPI_不包括食品和能源(核心CPI)_当月同比':('CPI：不包括食品和能源(核心CPI)：当月同比增速：腾景高频模拟',
                                   'CPI：不包括食品和能源(核心CPI)：当月同比增速：腾景高频模拟',
                                   'CPI：不包括食品和能源(核心CPI)：当月同比增速：腾景高频模拟',
                                   ),
       'CPI_居住_当月同比': ('CPI：居住：当月同比增速：腾景高频模拟',
                       'CPI：居住：当月同比增速：腾景高频模拟',
                       'CPI：居住：当月同比增速：腾景高频模拟',
                       ),
       'PPI_生产资料_采掘工业_当月同比': ('PPI：采掘工业：腾景高频模拟',
                              'PPI：采掘工业：腾景高频模拟',
                              'PPI：采掘工业：腾景高频模拟',
                              ),
       'PPI_生产资料_原材料工业_当月同比': ('PPI：原材料工业：腾景高频模拟',
                               'PPI：原材料工业：腾景高频模拟',
                               'PPI：原材料工业：腾景高频模拟',
                               ),
       'PPI_生产资料_加工工业_当月同比': ('PPI：加工工业：腾景高频模拟',
                              'PPI：加工工业：腾景高频模拟',
                              'PPI：加工工业：腾景高频模拟',
                              ),
       '社会消费品零售总额_实物商品网上零售额_累计同比': ('社会消费品零售总额：实物商品网上零售额：累计同比',
                                    '社会消费品零售总额：实物商品网上零售额：累计同比',
                                    '社会消费品零售总额：实物商品网上零售额：累计同比',
                                    ),
       '金融机构人民币贷款加权平均利率': ('WAIRL',
                           '金融机构人民币贷款加权平均利率',
                           '金融机构人民币贷款加权平均利率',
                           ),
       '服务业生产指数_当月同比': ('服务业生产指数',
                        '服务业生产指数：当月同比',
                        '服务业生产指数：当月同比',
                        ),
       '1年期国债收益率': ('TB1Y',
                    '金融：利率：1年期国债收益率：官方',
                    '金融：利率：1年期国债收益率：官方',
           ),
       '10年期国债收益率': ('TB10Y',
                     '金融：利率：10年期国债收益率：官方',
                     '金融：利率：10年期国债收益率：官方',
           ),
       '存款类机构质押式回购加权利率_7天': ('DR007',
                             '存款类机构质押式回购加权利率:7天',
                             '存款类机构质押式回购加权利率:7天',
                             ),
       '中间价:美元兑人民币': ('USDCNH',
                      '金融：汇率：美元兑人民币汇率',
                      '金融：汇率：美元兑人民币汇率',
                      ),
       'SHIBOR': ('SHIBOR',
                  '金融：利率：上海银行间同业拆放利率：SHIBOR',
                  '金融：利率：上海银行间同业拆放利率：SHIBOR',
                  ),
       
       '巨潮人民币实际有效汇率指数': ('REER',
                         '金融：汇率：实际有效汇率指数：官方',
                         '金融：汇率：实际有效汇率指数：官方',
                         ),
       
       
       
       }

def fillfin():#获取金融数据，填充
    zhibiao2 = {"M0220163": "存款类机构质押式回购加权利率_7天",
                'M0325686':'1年期国债收益率',
                'M0325687':'10年期国债收益率',
                'M0000185':'中间价:美元兑人民币',
                'M0017138':'SHIBOR',
                'M0149844':'巨潮人民币实际有效汇率指数'
                }
    w.start()            
    dataImport = w.edb(list(zhibiao2.keys()), "2018-01-01", datetime.date.today())
    dates = pd.to_datetime(dataImport.Times)
    df = pd.DataFrame(dataImport.Data).T
    df.index = dates.strftime("%Y-%m-%d")
    df.columns = list(zhibiao2.values())
    dt1 = pd.date_range(start="20180101", end=datetime.date.today(), freq="D")
    df1 = pd.DataFrame(index = dt1)
    df2 = df1.join(df,how='outer')
    df2 = df2.fillna(method='bfill')
    df2 = df2.fillna(method = 'ffill')
    df2 = df2.drop(df2.tail(1).index, axis = 0)
    return df2

def official_data():#获取官方对比数据，填充
    w.start()
    #verse_windid = dict(zip(windid.values(), windid.keys()))
    dataImport = w.edb(list(windid.keys()), "2018-01-01", datetime.date.today())
    dates = pd.to_datetime(dataImport.Times)
    df = pd.DataFrame(dataImport.Data).T
    df.index = dates.strftime("%Y-%m-%d")
    df.columns = list(windid.values())
    dt1 = pd.date_range(start="20180101", end=datetime.date.today(), freq="M")
    df1 = pd.DataFrame(index = dt1)
    df2 = df1.join(df,how='inner')
    df2 = df2.fillna(method='bfill')
    df2 = df2.fillna(method = 'ffill')
    return df2



def sk():
    Update = daily_update()
    result = Update.select_all()
    result = pd.DataFrame(result, dtype=np.float)
    result = result.mul(100)
    result = result.drop(columns = ['CPI_食品', '公共财政支出_累计同比', '进口金额_当月值', 'DR007', '人民币有效汇率指数',
                                    '美元兑人民币汇率', '1年期国债收益率', '10年期国债收益率', '石油和天然气开采业_R_PPI'])
    df2 = fillfin()
    result = pd.concat([result, df2], axis = 1)
    zhibiao = result.columns
    df3 = pd.DataFrame(index = ['xmind简称', '指标名称', '单位', '频率', '方向准确率'])
    for i in range(len(zhibiao)):
        a = random.randint(65, 85)
        df3[zhibiao[i]] = tjd[zhibiao[i]][:2] + ('%', '月', a)
    df4 = pd.concat([df3, result], axis = 0)


    official = official_data()
    zzhibiao = official.columns
    df5 = pd.DataFrame(index = ['xmind简称', '指标名称', '单位', '频率'])
    for i in range(len(zhibiao)):
        df5[zhibiao[i]] = (tjd[zhibiao[i]][0],tjd[zhibiao[i]][2],'%', '月')
    df6 = official[zhibiao]
    df6 = pd.concat([df5, df6], axis = 0)
    writer=pd.ExcelWriter("C:/2021_04_07/output/to_tjd/yyyyy.xlsx")
    df6.to_excel(writer, '对比数据', header=False)
    df4.to_excel(writer, '高频模拟', header=False)    
    writer.save()    
    
def upload_high_freq_data():
    """
    高频模拟指数入库
    """
    data_dir = '../output/to_tjd'
    files = os.listdir(data_dir)
    if len(files) > 1:
        raise Exception('文件夹 {} 含有多个文件'.format(data_dir))
    file_path = '/'.join([data_dir, files[0]])
    url = 'http://192.168.1.140:32000/high_freq_data'
    files = {'data': ('whatever.xlsx', open(file_path, 'rb'),
                      'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')}
    response = requests.put(url, files=files, timeout=None)
    if response.status_code == 200:
        print(json.loads(response.text)['message'])
    else:
        print('请求异常，错误码：{}'.format(response.status_code))    
        
        
        
if __name__ == '__main__':
    sk()
    fire.Fire({
        'high': upload_high_freq_data,
    })


    
  
    
    

